#include <boost/multi_array.hpp>
#include <algorithm>
#include <iostream>
#include <cstring>

int main()
{
	char c[18] = 
	{
		'L','i','a','n','g','\0','\0','\0','\0',
		'Z','h','a','n','g','\0','\0','\0','\0'
	};
	boost::multi_array_ref<char,2> a(c, boost::extents[2][9]); //* multi_array_ref

	typedef boost::multi_array<char,2>::array_view<1>::type array_view; //* array_view
	typedef boost::multi_array_types::index_range range; //* index_range

	array_view view = a[boost::indices[0][range(0,5)] ]; //* indices
	std::cout << view.origin() << std::endl;

	boost::multi_array<char,2>::reference subarray = a[1]; //* reference
	std::cout << subarray.origin() << std::endl;
}